# 定义源文件和中间文件的路径
SRCDIR = src
DOCDIR = doc

# 定义可执行文件和目标文件的名称
PROJ = lsq
SOURCE = $(SRCDIR)/$(PROJ)
GENDATA = $(SRCDIR)/$(PROJ)_data
DATA = $(DOCDIR)/testdata.txt
IMAGE = output.eps
REF = $(DOCDIR)/references.bib
PDF_DOC = doc/lsq.pdf

.PHONY: all clean

# 默认目标all
all: $(PROJ) $(GENDATA) $(IMAGE) $(PDF_DOC)

# 编译运行lsq.c
$(PROJ): $(SOURCE).c
	gcc -o $(PROJ) $(SOURCE).c

# 编译运行lsq_data.c
$(GENDATA): $(GENDATA).c
	gcc -o $(GENDATA) $(GENDATA).c

# 生成图片output.eps，并移到doc目录下使pdf正常生成
$(IMAGE): $(PROJ) $(GENDATA) 
	./$(GENDATA) 
	./$(PROJ)
	gnuplot $(SRCDIR)/$(PROJ).gp
	mv $(IMAGE) doc/

# 生成文档doc/lsq.pdf
$(PDF_DOC): $(DOCDIR)/*.tex $(DOCDIR)/*.bib
	cd $(DOCDIR) && xelatex $(PROJ).tex
	cd $(DOCDIR) && bibtex $(PROJ).aux
	cd $(DOCDIR) && xelatex $(PROJ).tex
	cd $(DOCDIR) && xelatex $(PROJ).tex

# 清理编译生成的文件
clean:
	rm -rf $(PROJ) $(PDF_DOC) $(GENDATA) *.dat *.txt
	rm -rf $(SRCDIR)/*.o
	rm -rf $(DOCDIR)/*.aux $(DOCDIR)/*.bbl $(DOCDIR)/*.blg $(DOCDIR)/*.log $(DOCDIR)/*.eps

# 伪目标exe--编译运行.c
exe: $(PROJ) $(GENDATA)

# 伪目标doc--生成文档doc/lsq.pdf
doc: $(PDF_DOC)